//入口文件
import Vue from 'vue'
import $ from 'jquery'
import VueResource from 'vue-resource'
//安装cue-resource
Vue.use(VueResource)

import moment from 'moment'
Vue.filter('dateFormat',function(datestr,pattern="YYYY-MM-DD HH:mm:ss"){
	return moment(datestr).format(pattern)
})
//全局设置post时候表单数据格式
Vue.http.options.emulateJSON=true

import './lib/mui/css/mui.min.css'
import './lib/mui/css/icons-extra.css'
// import { Header,Swipe, SwipeItem,Button,Lazyload } from 'mint-ui'
// Vue.component(Header.name, Header)
// Vue.component(Swipe.name, Swipe)
// Vue.component(SwipeItem.name, SwipeItem)
// Vue.component(Button.name, Button)
// Vue.use(Lazyload);
import MintUI from 'mint-ui'
Vue.use(MintUI)
import 'mint-ui/lib/style.css'
//1.1
import VueRouter from'vue-router'
//1.2
Vue.use(VueRouter)
//1.3导入自己的router.js模块
import router from './router.js'

import Vuex from 'vuex'
Vue.use(Vuex)

import App from './app.vue'

//安装图片预览插件
import VuePreview from 'vue-preview'
// defalut install
Vue.use(VuePreview)

//从localStorge中获取数据
var car = JSON.parse(localStorage.getItem('car')||'[]')

var store = new Vuex.Store({
	state:{//this.$store.state.***//专门用来存储数据
		car:car//购物车中数据
	},
	mutations:{//如果要操作store中state值，只能调用mutations中方法
		//子组件想要调用mutations方法，只能使用this.$store.commit('方法名','按需传入的唯一参数')
		addToCar(state,goodsinfo){//点击加入购物车把信息保存到store的car上
			/*
			1.如果购物车种已经有这个商品，更新数量就可以了
			2.如果没有，把商品数据push到car中
			*/
		 var flag = false
		 state.car.some(item => {
			 if(item.id == goodsinfo.id){
				 item.count+=parseInt(goodsinfo.count)
				 flag = true
				 return true
			 }
		 })
		 //如果没找到，flag为false，把商品数据直接push到购物车中
		 if(!flag){
			 state.car.push(goodsinfo)
		 }
			 localStorage.setItem('car' , window.JSON.stringify(state.car))
		},
		//更新car之后，把car数组存储到本地的localStorage中
	up(state,goodsinfo){
		state.car.some(item=>{
			if(item.id == goodsinfo.id){
				item.count = parseInt(goodsinfo.count)
				return true
			}
		});
		localStorage.setItem('car' , window.JSON.stringify(state.car))
	},
	removeCar(state,id){
		//根据id删除商品
		state.car.some((item,i)=>{
			if(item.id == id){
				state.car.splice(i,1)
				return true
			}
		})//将删除完毕后的购物车数据，同步到本地存储中
		localStorage.setItem('car' , window.JSON.stringify(state.car))
	},
	updateGoodsSel(state,info){
		state.car.some(item=>{
			if(item.id==info.id){
				item.selected = info.selected
				return true
			}
		})
			localStorage.setItem('car' , window.JSON.stringify(state.car))
	}
	},
	getters:{//this.$store.getters.***
		//只负责对外提供数据不负责修改数据
		getAllCount(state){
			var c = 0;
			state.car.forEach(item=>{
				c+=item.count
			})
			return c
		},
		getGoodsSelected(state){
			var o = {}
			state.car.forEach(item=>{
				o[item.id] = item.selected
			})
			return o
		},
		getSum(state){
			var obj = {
				count:0,
				amount:0
			}
			state.car.forEach(item=>{
					if(item.selected){
						obj.count+=item.count
						obj.amount+=item.price*item.count
					}
			})
			return obj
		}
	}
})

var vm = new Vue({
	el:"#app",
	render:c=>c(App),
	router,//1.4挂载路由项目
	store
})